import request from '@/utils/axios'
import type { SkuType, SpuType } from '@/api/mall/product/spu'

// 拼团活动
export interface CombinationActivityType {
  id: number
  name?: string
  spuId?: number
  totalLimitCount?: number
  singleLimitCount?: number
  startTime?: Date
  endTime?: Date
  userSize?: number
  totalCount?: number
  successCount?: number
  orderUserCount?: number
  virtualGroup?: number
  status?: number
  limitDuration?: number
  products: CombinationProductType[]
}

// 拼团活动所需属性
export interface CombinationProductType {
  spuId: number
  skuId: number
  combinationPrice: number // 拼团价格
}

// 扩展 Sku 配置
export type SkuTypeExtension = SkuType & {
  productConfig: CombinationProductType
}

// 扩展 Spu 配置
export interface SpuTypeExtension extends SpuType {
  skuList: SkuTypeExtension[] // 重写类型
}

// 拼团记录
export interface CombinationRecordType {
  id: number // 拼团记录编号
  activityId: number // 拼团活动编号
  nickname: string // 用户昵称
  avatar: string // 用户头像
  headId: number // 团长编号
  expireTime: string // 过期时间
  userSize: number // 可参团人数
  userCount: number // 已参团人数
  status: number // 拼团状态
  spuName: string // 商品名字
  picUrl: string // 商品图片
  virtualGroup: boolean // 是否虚拟成团
  startTime: string // 开始时间 (订单付款后开始的时间)
  endTime: string // 结束时间（成团时间/失败时间）
}

// 拼团相关接口
export const CombinationApi = {
  // 拼团活动接口
  Activity: {
    // 创建拼团
    create: async (data: CombinationActivityType) => {
      return await request.post({
        url: '/promotion/combination-activity/create',
        data,
        is_mock: true
      })
    },
    // 更新拼团
    update: async (data: CombinationActivityType) => {
      return await request.post({
        url: '/promotion/combination-activity/update',
        data,
        is_mock: true
      })
    },
    // 删除拼团
    delete: async (id: number) => {
      return await request.delete({ url: `/promotion/combination-activity/delete?id=${id}`, is_mock: true })
    },
    // 关闭拼团
    close: async (id: number) => {
      return request.put({ url: `/promotion/combination-activity/close?id=${id}`, is_mock: true })
    },
    // 获取拼团详情
    detail: async (id: number) => {
      return await request.get({
        url: `/promotion/combination-activity/get?id=${id}`,
        is_mock: true
      })
    },
    // 获取拼团分页列表
    page: async params => {
      return await request.get({
        url: '/promotion/combination-activity/page',
        params,
        is_mock: true
      })
    }
  },
  // 拼团记录接口
  Record: {
    // 获取拼团记录分页列表
    page: async params => {
      return await request.get({
        url: '/promotion/combination-record/page',
        params,
        is_mock: true
      })
    },
    // 获取拼团记录的概要信息
    summary: async () => {
      return await request.get({
        url: '/promotion/combination-record/get-summary',
        is_mock: true
      })
    }
  }
}
